<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var obj = {
            name: 'lili',
            age: 18,
        }
        // Object.defineProperties()
        Object.defineProperties(obj, {
            // 要配置的属性：配置这是属性的配置对象
            name: {
                // 属性的值
                value: "lisi",
                writable: false,
                configurable: false,
                enumerable: false,
            }
        })

        // Object.defineProperty()
        // 设置对象中属性的配置
        // 参数是对象
        // 参数是要配置的属性
        // 参数是配置对象
        Object.defineProperty(obj, 'name', {
            //属性的值
            value: 'lisi',
            // 设置这个参数2属性是否可以修改
            writable: false,
            // 设置这个参数2属性是否可以删除
            configurable: false,
            // 设置这个参数2属性是否可以循环
            enumerable: false,
        })
        obj.name = 'nana';
        console.log(obj);

        delete obj.name;
        console.log(obj);

        var obj1 = {
            name: 'nana',
        }
        // 冻结一个对象 不能增加修改删除
        Object.freeze(obj1);
        obj1.sex = true;
        obj1.name = '张三'
        delete obj1.age;
        console.log(obj1);
        // 获取是否被冻结
        console.log(Object.isFrozen(obj1));


        // 封存（密封）一个对象  不能增加删除
        Object.seal(obj1);
        obj1.sex = true;
        obj1.name = "张三"
        delete obj1.age;
        console.log(obj1);
        // 是否被密封
        console.log(Object.isSealed(obj1));


        // 阻止对象的扩张 不能增加
        Object.preventExtensions(obj1);
        obj1.sex = true;
        obj1.name = '张三'
        delete obj1.age;
        console.log(onj1);
        // 是否可以扩张
        console.log(Object.isExtensible(obj1));


    </script>
</body>

</html>